PL/SQL (Procedural Language for SQL) একটি প্রসিজ্যুরাল প্রোগ্রামিং ভাষা, যা SQL এর সাথে প্রোগ্রামিং কনসেপ্ট যেমন লজিক্যাল কন্ডিশন, লুপ এবং এক্সেপশন হ্যান্ডলিং যুক্ত করে। PL/SQL ব্লক একটি কাঠামোবদ্ধ গঠন অনুসরণ করে, যা ৪টি প্রধান অংশে বিভক্ত:
- DECLARE: যেখানে ভেরিয়েবল, কনস্ট্যান্ট এবং অন্যান্য ডেটা টাইপ ঘোষণা করা হয়।
- BEGIN: যেখানে কার্যকর কোড থাকে, যেমন SQL স্টেটমেন্ট, লজিক, এবং ফাংশন কল।
- EXCEPTION: ত্রুটি বা এক্সেপশন হ্যান্ডলিং অংশ।
- END: ব্লকটির শেষ চিহ্ন।
PL/SQL ব্লক গঠন:
DECLARE
-- Declaration section: Declare variables, constants, types
v_employee_name VARCHAR2(50); -- Variable to store employee name
v_salary NUMBER(8, 2); -- Variable to store employee salary
BEGIN
-- Executable section: SQL statements and logic
SELECT employee_name INTO v_employee_name FROM employees WHERE employee_id = 101;
SELECT salary INTO v_salary FROM employees WHERE employee_id = 101;
-- Conditional logic
IF v_salary > 5000 THEN
DBMS_OUTPUT.PUT_LINE('High salary employee: ' || v_employee_name);
ELSE
DBMS_OUTPUT.PUT_LINE('Normal salary employee: ' || v_employee_name);
END IF;
EXCEPTION
-- Exception handling section: Handle errors
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No employee found with the given ID');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An unexpected error occurred: ' || SQLERRM);
END;
১. DECLARE সেকশন
DECLARE সেকশনটি ঐচ্ছিক। এই অংশে আপনি সমস্ত ভেরিয়েবল, কনস্ট্যান্ট, এবং ডেটা টাইপ ঘোষণা করেন যা পরে BEGIN সেকশনে ব্যবহৃত হবে। এই অংশে সাধারণত:
- ভেরিয়েবল ডিক্লেয়ারেশন
- কনস্ট্যান্ট ডিক্লেয়ারেশন
- কাস্টম টাইপ ডিক্লেয়ারেশন (যদি প্রয়োজন হয়)
উদাহরণ:
DECLARE
v_name VARCHAR2(50); -- Declaring a variable for name
v_salary NUMBER(8,2); -- Declaring a variable for salary
২. BEGIN সেকশন
BEGIN সেকশনটি হলো প্রোগ্রামের কার্যকরী অংশ। এই অংশে আপনি SQL স্টেটমেন্ট, লজিক্যাল অপারেশন, কন্ডিশনাল স্টেটমেন্ট (যেমন IF-ELSE), লুপ (যেমন FOR, WHILE) এবং অন্যান্য প্রোগ্রামিং লজিক লিখেন।
এখানে আপনি ডেটাবেস থেকে ডেটা নির্বাচন করতে পারেন, পরিবর্তন করতে পারেন বা কোনো প্রক্রিয়া সম্পাদন করতে পারেন।
উদাহরণ:
BEGIN
-- Executing SQL statement to fetch data
SELECT employee_name INTO v_name FROM employees WHERE employee_id = 101;
SELECT salary INTO v_salary FROM employees WHERE employee_id = 101;
-- Conditional logic based on salary
IF v_salary > 5000 THEN
DBMS_OUTPUT.PUT_LINE('High salary employee: ' || v_name);
ELSE
DBMS_OUTPUT.PUT_LINE('Normal salary employee: ' || v_name);
END IF;
END;
৩. EXCEPTION সেকশন
EXCEPTION সেকশনটি ত্রুটি বা এক্সেপশন হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। যখন কোন ত্রুটি ঘটে (যেমন, একটি SELECT স্টেটমেন্ট কোনো ডেটা না পেলে), তখন এক্সেপশন সেকশনটি কার্যকর হয়।
Predefined exceptions যেমন NO_DATA_FOUND, TOO_MANY_ROWS বা User-defined exceptions ব্যবহার করা যায়। আপনি WHEN OTHERS ব্যবহার করে যে কোনো অজানা ত্রুটি ধরতে পারেন।
উদাহরণ:
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No employee found with the given ID');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('Query returned more than one result');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An unexpected error occurred: ' || SQLERRM);
NO_DATA_FOUND: যখন ডেটা পাওয়া যায় না।TOO_MANY_ROWS: যখন একটি কোয়েরি একাধিক রেকর্ড রিটার্ন করে, কিন্তু একটিই আশা করা হয়।
৪. END সেকশন
END সেকশনটি PL/SQL ব্লকের শেষ নির্দেশ। এটি একটি বাধ্যতামূলক অংশ, এবং এটি PL/SQL ব্লকটির সমাপ্তি চিহ্নিত করে।
উদাহরণ:
END;
সারাংশ:
PL/SQL ব্লক একটি সম্পূর্ণ কাঠামো তৈরি করে, যা কোডের কার্যকারিতা, ত্রুটি হ্যান্ডলিং এবং ভেরিয়েবল ডিক্লেয়ারেশনের জন্য জায়গা প্রদান করে।
- DECLARE: ভেরিয়েবল, কনস্ট্যান্ট এবং ডেটা টাইপ ঘোষণা করা।
- BEGIN: SQL স্টেটমেন্ট, লজিক এবং কার্যকর কোড।
- EXCEPTION: ত্রুটি হ্যান্ডলিং।
- END: PL/SQL ব্লকের সমাপ্তি।
এটি আপনাকে একটি সম্পূর্ণ প্রোগ্রামিং পরিবেশ প্রদান করে যেখানে SQL এবং প্রোগ্রামিং লজিক একত্রে ব্যবহৃত হয়।
Read more